﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using CMD_WEB.DAL;
using System.Runtime.Serialization;

namespace CMD.BAL.SOL
{
     public class SolicitudRol
    {
        #region Propiedades

        public Dictionary<string, string> parametros;
        public DataSet dsSolicitud;
        [DataMemberAttribute]
        public string unidRol; 

        //-----------contadores por rol
        int contTodasRol;
        public int ContTodasRol
        {
            get { return contTodasRol; }
            set { contTodasRol = value; }
        }

        int contAltasRol;
        public int ContAltasRol
        {
            get { return contAltasRol; }
            set { contAltasRol = value; }
        }

        int contModificacionesRol;
        public int ContModificacionesRol
        {
            get { return contModificacionesRol; }
            set { contModificacionesRol = value; }
        }

        int contReemplazosRol;
        public int ContReemplazosRol
        {
            get { return contReemplazosRol; }
            set { contReemplazosRol = value; }
        }

        int contEnProcesoRol;
        public int ContEnProcesoRol
        {
            get { return contEnProcesoRol; }
            set { contEnProcesoRol = value; }
        }

        int contAprobadasRol;
        public int ContAprobadasRol
        {
            get { return contAprobadasRol; }
            set { contAprobadasRol = value; }
        }

        int contBorradoresRol;
        public int ContBorradoresRol
        {
            get { return contBorradoresRol; }
            set { contBorradoresRol = value; }
        }

        int contEnviandoRol;
        public int ContEnviandoRol
        {
            get { return contEnviandoRol; }
            set { contEnviandoRol = value; }
        }

        int contCanceladaRol;
        public int ContCanceladaRol
        {
            get { return contCanceladaRol; }
            set { contCanceladaRol = value; }
        }

        int contRechazadaRol;
        public int ContRechazadaRol
        {
            get { return contRechazadaRol; }
            set { contRechazadaRol = value; }
        }
        //public int contAtendidasRol
        //{
        //    get { return contAtendidasRol; }
        //    set { contAtendidasRol = value; }
        //}
        //------------end contadores por rol
        #endregion
        public SolicitudRol()
        {
        }
         public SolicitudRol(string unidRol) 
        {
            loadCountersRol(unidRol);
        }
         public DataTable GetDataRol(bool todas, int idStatus, int idTipo, string unidRol)
         {
             DataTable solicitudes = new DataTable();
             string query = "Exec SP_CMD_SEL_SOL_WEB ";

             query = query + todas + "," + idStatus.ToString() + "," + idTipo.ToString() + "," + unidRol.ToString();
            
             try
             {
                 solicitudes = SrvDB.ExecuteQuery(query);
             }
             catch (Exception ex)
             {
                 throw ex;
             }

             return solicitudes;
         }
         public static void DeleteData(string ids)
         {
             int rowsAffected = 0;
             string query = "Exec SP_CMD_DELETE_SOL '" + ids + "'";

             try
             {
                 rowsAffected = SrvDB.ExecuteNonQuery(query);
             }
             catch (Exception ex)
             {
                 throw ex;
             }

         }
         private void loadCountersRol(string unidRol)
         {
             DataSet contadores = new DataSet();

             string qryStatusRol = "Exec SP_CMD_SOL_COUNT_STATUSXROL'" + unidRol + "'";
             string qryTipoRol = "Exec SP_CMD_SOL_COUNT_TIPOXROL'" + unidRol + "'";

             try
             {
                 contadores.Tables.Add(GetDataRol(true, 0, 0, unidRol));
                 contadores.Tables.Add(SrvDB.ExecuteQuery(qryStatusRol));
                 contadores.Tables.Add(SrvDB.ExecuteQuery(qryTipoRol));

                 //contTodasRol = contadores.Tables[0].Rows.Count;

                 for (int x = 0; x < contadores.Tables[1].Rows.Count; x++)
                 {
                     if (contadores.Tables[1].Rows[x]["dsc_solicitud_status"].ToString() == "Borrador")
                         ContBorradoresRol = int.Parse(contadores.Tables[1].Rows[x]["Cont"].ToString());

                     if (contadores.Tables[1].Rows[x]["dsc_solicitud_status"].ToString() == "Enviando")
                         ContEnviandoRol = int.Parse(contadores.Tables[1].Rows[x]["Cont"].ToString());

                     if (contadores.Tables[1].Rows[x]["dsc_solicitud_status"].ToString() == "Aprobada")
                         ContAprobadasRol = int.Parse(contadores.Tables[1].Rows[x]["Cont"].ToString());

                     if (contadores.Tables[1].Rows[x]["dsc_solicitud_status"].ToString() == "Cancelada")
                         ContCanceladaRol = int.Parse(contadores.Tables[1].Rows[x]["Cont"].ToString());

                     if (contadores.Tables[1].Rows[x]["dsc_solicitud_status"].ToString() == "Rechazada")
                         ContRechazadaRol = int.Parse(contadores.Tables[1].Rows[x]["Cont"].ToString());

                     if (contadores.Tables[1].Rows[x]["dsc_solicitud_status"].ToString() == "En proceso")
                          ContEnProcesoRol = int.Parse(contadores.Tables[1].Rows[x]["Cont"].ToString());

                     if (contadores.Tables[1].Rows[x]["dsc_solicitud_status"].ToString() == "Autorizada o Rechazada")
                         contTodasRol = int.Parse(contadores.Tables[1].Rows[x]["Cont"].ToString());
                 }
                // contAtendidasRol = contAprobadasRol + contRechazadaRol + contEnProcesoRol + contCanceladaRol;
                 for (int x = 0; x < contadores.Tables[2].Rows.Count; x++)
                 {
                     if (contadores.Tables[2].Rows[x]["dsc_tipo_solicitud"].ToString() == "Alta")
                         ContAltasRol = int.Parse(contadores.Tables[2].Rows[x]["Cont"].ToString());

                     if (contadores.Tables[2].Rows[x]["dsc_tipo_solicitud"].ToString() == "Modificación")
                         ContModificacionesRol = int.Parse(contadores.Tables[2].Rows[x]["Cont"].ToString());

                     if (contadores.Tables[2].Rows[x]["dsc_tipo_solicitud"].ToString() == "Reemplazo")
                         ContReemplazosRol = int.Parse(contadores.Tables[2].Rows[x]["Cont"].ToString());
                 }
                 

                 //ContAltasRol = int.Parse(contadores.Tables[2].Rows[0]["Cont"].ToString());
                 //ContModificacionesRol = int.Parse(contadores.Tables[2].Rows[1]["Cont"].ToString());
                 //ContReemplazosRol = int.Parse(contadores.Tables[2].Rows[2]["Cont"].ToString());

                 //ContBorradoresRol = int.Parse(contadores.Tables[1].Rows[0]["Cont"].ToString());
                 //ContEnviandoRol = int.Parse(contadores.Tables[1].Rows[1]["Cont"].ToString());
                 //ContAprobadasRol = int.Parse(contadores.Tables[1].Rows[2]["Cont"].ToString());
                 //ContCanceladaRol = int.Parse(contadores.Tables[1].Rows[3]["Cont"].ToString());
                 //ContRechazadaRol = int.Parse(contadores.Tables[1].Rows[4]["Cont"].ToString());

                 //try
                 //{
                 //    ContEnProcesoRol = int.Parse(contadores.Tables[1].Rows[5]["Cont"].ToString());
                     
                 //}
                 //catch
                 //{
                 //    ContEnProcesoRol = 0;
                 
                 //}

                 //try
                 //{


                 //    contTodasRol = int.Parse(contadores.Tables[1].Rows[6]["Cont"].ToString());
                 //}
                 //catch 
                 //{ 
                 //    contTodasRol = 0;
                 //}
                 
                 

             }
             catch (Exception ex)
             {
                 throw ex;
             }


         }

         public int InsertRolStatus(string unidSolicitud, string unidRol, string status)
         {
             int dt = 0;
             try
             {
                 dt = CMD_WEB.DAL.SrvDB.ExecuteNonQuery("exec SP_CMD_INSERT_ROL " + unidSolicitud + "," + unidRol + "," + status);

                 return dt;
             }
             catch (Exception ex)
             {
                 return dt;
             }

         }

         public DataTable GetSolByRol(bool todas, int idStatus, int idTipo, string unidRol)
         {
             DataTable solicitudes = new DataTable();
             string query = "Exec SP_CMD_SEL_SOLbyROL ";    //"Exec SP_CMD_SEL_WEB "; //

             query = query + todas + "," + idStatus.ToString() + "," + idTipo.ToString() + "," + unidRol.ToString();

             try
             {
                 solicitudes = SrvDB.ExecuteQuery(query);
             }
             catch (Exception ex)
             {
                 throw ex;
             }

             return solicitudes;
         }

    }
}
